diff src/share/vm/asm/codeBuffer.hpp @ 3602:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents 44ce519bc3d1
children b31471cdc53e
line wrap: on
line diff
--- a/src/share/vm/asm/codeBuffer.hpp	Fri Aug 31 16:39:35 2012 -0700
+++ b/src/share/vm/asm/codeBuffer.hpp	Sat Sep 01 13:25:18 2012 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -486,6 +486,9 @@
   bool insts_contains(address pc) const  { return _insts.contains(pc); }
   bool insts_contains2(address pc) const { return _insts.contains2(pc); }
 
+  // Record any extra oops required to keep embedded metadata alive
+  void finalize_oop_references(methodHandle method);
+
   // Allocated size in all sections, when aligned and concatenated
   // (this is the eventual state of the content in its final
   // CodeBlob).
@@ -504,6 +507,12 @@
     return (recorder == NULL)? 0: recorder->oop_size();
   }
 
+  // allocated size of any and all recorded metadata
+  csize_t total_metadata_size() const {
+    OopRecorder* recorder = oop_recorder();
+    return (recorder == NULL)? 0: recorder->metadata_size();
+  }
+
   // Configuration functions, called immediately after the CB is constructed.
   // The section sizes are subtracted from the original insts section.
   // Note:  Call them in reverse section order, because each steals from insts.
@@ -532,9 +541,9 @@
     copy_relocations_to(blob);
     copy_code_to(blob);
   }
-  void copy_oops_to(nmethod* nm) {
+  void copy_values_to(nmethod* nm) {
     if (!oop_recorder()->is_unused()) {
-      oop_recorder()->copy_to(nm);
+      oop_recorder()->copy_values_to(nm);
     }
   }